home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Online / SpeakFreely / src / lpc10 / lpfilt31.c < prev    next >
Text File  |  2000-05-18  |  2KB  |  60 lines

  1. /************************************************************************
  2. *
  3. *    Ron Cohn's implementation    January 1992
  4. *
  5. *   31 Point Equiripple FIR Low-Pass Filter
  6. *
  7. *    Passband:  ripple = 0.5 dB, cutoff =  800 Hz
  8. *    Stopband:  atten. =  40 dB, cutoff = 1240 Hz
  9. *
  10. * Inputs:
  11. *    LEN    - Length of speech buffers
  12. *    NSAMP  - Number of samples to filter
  13. *    INBUF  - Input speech buffer
  14. * Output:
  15. *    LPBUF  - Low passed speech buffer
  16. */
  17.  
  18. void lpfilt31(inbuf, lpbuf)
  19. float inbuf[], lpbuf[];
  20. {
  21.    int j;
  22.    static float h0  =   -0.0097201988;
  23.    static float h1  =   -0.0105179986;
  24.    static float h2  =   -0.0083479648;
  25.    static float h3  =    0.0005860774;
  26.    static float h4  =    0.0130892089;
  27.    static float h5  =    0.0217052232;
  28.    static float h6  =    0.0184161253;
  29.    static float h7  =    0.0003397230;
  30.    static float h8  =   -0.0260797087;
  31.    static float h9  =   -0.0455563702;
  32.    static float h10 =   -0.0403068550;
  33.    static float h11 =    0.0005029835;
  34.    static float h12 =    0.0729262903;
  35.    static float h13 =    0.1572008878;
  36.    static float h14 =    0.2247288674;
  37.    static float h15 =    0.2505359650;
  38.     
  39.  
  40.    for(j=312+1-180; j<=312; j++)
  41.    {
  42.       lpbuf[j]  = h0  * (inbuf[j   ] + inbuf[j-30]);
  43.       lpbuf[j] += h1  * (inbuf[j -1] + inbuf[j-29]);
  44.       lpbuf[j] += h2  * (inbuf[j -2] + inbuf[j-28]);
  45.       lpbuf[j] += h3  * (inbuf[j -3] + inbuf[j-27]);
  46.       lpbuf[j] += h4  * (inbuf[j -4] + inbuf[j-26]);
  47.       lpbuf[j] += h5  * (inbuf[j -5] + inbuf[j-25]);
  48.       lpbuf[j] += h6  * (inbuf[j -6] + inbuf[j-24]);
  49.       lpbuf[j] += h7  * (inbuf[j -7] + inbuf[j-23]);
  50.       lpbuf[j] += h8  * (inbuf[j -8] + inbuf[j-22]);
  51.       lpbuf[j] += h9  * (inbuf[j -9] + inbuf[j-21]);
  52.       lpbuf[j] += h10 * (inbuf[j-10] + inbuf[j-20]);
  53.       lpbuf[j] += h11 * (inbuf[j-11] + inbuf[j-19]);
  54.       lpbuf[j] += h12 * (inbuf[j-12] + inbuf[j-18]);
  55.       lpbuf[j] += h13 * (inbuf[j-13] + inbuf[j-17]);
  56.       lpbuf[j] += h14 * (inbuf[j-14] + inbuf[j-16]);
  57.       lpbuf[j] += h15 * (inbuf[j-15]              );
  58.    }
  59. }
  60.